package cn.itcast.nems.order.dao.entity;

import cn.itcast.nems.common.entity.UUIDEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 销售订单-支付流水。注：只记录实际发生，正反向流水都保存在该表。
 * </p>
 *
 * @author liyong
 * @since 2023-08-31
 */
@Getter
@Setter
@TableName("e2_order_payment_flow")
public class OrderPaymentFlow extends UUIDEntity {

    /**
     * 订单ID
     */
    private String orderId;

    /**
     * 流水号，生成规则："ZF"+YYMMDD+ZEROFILL(MURMURHASH(UUID()),0,10)。示例：OP23082887654321
     */
    private String no;

    /**
     * 凭单类型 在线支付:ONLINE_PAY、线下支付:OFFLINE_PAY、退款:REFUND_PAY
     */
    private String journalType ;

    /**
     * 凭单号
     */
    private String journalNo ;

    /**
     * 本次发生金额：支付为正，退费为负。单位：分
     */
    private Integer amount;

    /**
     * 手续费：amount*charge_rata/100。单位：分。注：目前只有支付会存在费用。
     */
    private Integer charge;

    /**
     * 手续费费率。和渠道方确定。
     */
    private BigDecimal chargeRate;

    /**
     * 业务发生时间：根据凭单的不同，分别记录在线支付时间、离线支付时间、退费时间。
     */
    private LocalDateTime bizDate;

    /**
     * 支付方式编号：在线支付填写支付平台对应支付方式编号，离线支付填写离线支付对应凭单上的支付方式编号，退费则填写退费方式编号
     */
    private String paymentMethodCode;

    /**
     * 支付方式名称：在线支付填写支付平台对应支付方式名称，离线支付填写离线支付对应凭单上的支付方式名称，退费则填写退费方式名称
     */
    private String paymentMethodName;

    /**
     * 支付渠道帐号编号：同一个支付方式可能会对应多个支付渠道。比如支付宝、微信可能会有多个渠道账号，银行也会有多个帐号。此处保存比支付方式更细粒度的具体帐号。
     */
    private String paymentAccountCode;

    /**
     * 支付渠道帐号名称
     */
    private String paymentAccountName;

    /**
     * 备注
     */
    private String remark;
}
